/**
 * Founder
 * SqlListCollection.java
 */
package com.iori.common.db.dbctrl;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * [クラス名]<br>
 * SQLリストコレクション<br>
 * <br>
 * [機能概要]<br>
 * 複数のSQLリストを一元管理するクラス。<br>
 * <br>
 * [変更履歴]<br>
 * 2005/01/07 ver1.00 新規作成 zhanjc<br>
 * <br>
 *
 * @see jp.co.pia.bety.front.common.db.dbctrl.SqlList
 *
 * @author zhanjc
 * @version 1.00
 */
public class SqlListCollection {

	/**
	 * ログ出力用のインスタンス生成。
	 */
	protected static Log logger = LogFactory.getLog(SqlListCollection.class);

	/**
	 * SQLリストのマップ
	 */
	protected static Map sqlList;

	/**
	 * 初期化済みフラグ
	 */
	private static boolean isInit = false;

	/**
	 * 初期化処理。
	 */
	public static void init() {
		if (isInit == false) {
			sqlList = new HashMap();
			isInit = true;
			logger.debug("initialized.");
		}
	}

	/**
	 * 初期化済みフラグを取得する。
	 *
	 * @return boolean 初期化済みフラグ
	 */
	public boolean isInit() {
		return isInit;
	}

	/**
	 * sqllistをインスタンス化し指定されたキーワード（業務名）で保持する。
	 *
	 * @param key
	 *            業務名
	 * @param config
	 *            sqllist.propertiesファイル
	 */
	public static void put(String key, String config) {
		sqlList.put(key, new SqlList(config));
		logger.debug("sqlList.put(" + key + ")");
		logger.debug("sqlList.size()=" + sqlList.size());
	}

	/**
	 * 指定されたキーワード（業務名）からsqllistを取得する。
	 *
	 * @param key
	 *            業務名
	 */
	public static SqlList get(String key) {
		if (sqlList == null)
			return null;
		Object obj = sqlList.get(key);
		if (obj instanceof SqlList) {
			logger.debug("sqlList.get(" + key + ")");
			return (SqlList) obj;
		} else {
			return null;
		}
	}

	/**
	 * 指定されたキーワード（業務名）のsqllistを破棄します。
	 *
	 * @param key
	 *            業務名
	 */
	public static void reset(String key) {
		SqlList list = get(key);
		if (list != null) {
			list.destroy();
			sqlList.remove(key);
			logger.debug("sqlList.reset(" + key + ")");
			logger.debug("sqlList.size()=" + sqlList.size());
		}
	}
}
